/*
 * @lc app=leetcode.cn id=50 lang=java
 *
 * [50] Pow(x, n)
 */

// @lc code=start
class Solution {
    public double myPow(double x, int n) {
        if(n == 0)
            return 1;
        
        if(n == Integer.MIN_VALUE) {
            return myPow(1/x, -(n+1)) / x;
        }

        if(n < 0) {
            return myPow(1/x, -n);
        }

        if(n % 2 == 1) {
            return x * myPow(x, n-1);
        } else {
            double sum = myPow(x, n/2);
            return sum * sum;
        }
    }
}
// @lc code=end

